Autolinks (extension)
GFM enables the autolink
extension, where autolinks will be recognised in a greater number of conditions.
Autolinks can also be constructed without requiring the use of <
and to >
to delimit them, although they will be recognized under a smaller set of circumstances. All such recognized autolinks can only come at the beginning of a line, after whitespace, or any of the delimiting characters *
, _
, ~
, and (
.
An extended www autolink will be recognized when the text www.
is found followed by a valid domain. A valid domain consists of alphanumeric characters, underscores (_
), hyphens (-
) and periods (.
). There must be at least one period, and no underscores may be present in the last two segments of the domain.
The scheme http
will be inserted automatically:
Example 621
Markdown | HTML | Demo |
---|---|---|
|
|
After a valid domain, zero or more non-space non-<
characters may follow:
Example 622
Markdown | HTML | Demo |
---|---|---|
|
|
We then apply extended autolink path validation as follows:
Trailing punctuation (specifically, ?
, !
, .
, ,
, :
, *
, _
, and ~
) will not be considered part of the autolink, though they may be included in the interior of the link:
Example 623
Markdown | HTML | Demo |
---|---|---|
|
|
When an autolink ends in )
, we scan the entire autolink for the total number of parentheses. If there is a greater number of closing parentheses than opening ones, we don’t consider the last character part of the autolink, in order to facilitate including an autolink inside a parenthesis:
Example 624
Markdown | HTML | Demo |
---|---|---|
|
|
This check is only done when the link ends in a closing parentheses )
, so if the only parentheses are in the interior of the autolink, no special rules are applied:
Example 625
Markdown | HTML | Demo |
---|---|---|
|
|
If an autolink ends in a semicolon (;
), we check to see if it appears to resemble an entity reference; if the preceding text is &
followed by one or more alphanumeric characters. If so, it is excluded from the autolink:
Example 626
Markdown | HTML | Demo |
---|---|---|
|
|
<
immediately ends an autolink.
Example 627
Markdown | HTML | Demo |
---|---|---|
|
|
An extended url autolink will be recognised when one of the schemes http://
, https://
, or ftp://
, followed by a valid domain, then zero or more non-space non-<
characters according to extended autolink path validation:
Example 628
Markdown | HTML | Demo |
---|---|---|
|
|
An extended email autolink will be recognised when an email address is recognised within any text node. Email addresses are recognised according to the following rules:
- One ore more characters which are alphanumeric, or
.
,-
,_
, or+
. - An
@
symbol. - One or more characters which are alphanumeric, or
.
,-
, or_
. At least one of the characters here must be a period (.
). The last character must not be one of-
or_
. If the last character is a period (.
), it will be excluded from the autolink.
The scheme mailto:
will automatically be added to the generated link:
Example 629
Markdown | HTML | Demo |
---|---|---|
|
|
+
can occur before the @
, but not after.
Example 630
Markdown | HTML | Demo |
---|---|---|
|
|
.
, -
, and _
can occur on both sides of the @
, but only .
may occur at the end of the email address, in which case it will not be considered part of the address:
Example 631
Markdown | HTML | Demo |
---|---|---|
|
|